import {getDetailById} from "api/api"
export default {
    state:{
        //商品详细详细(包含商品本身的信息 商品的导航信息 商品的所有销售属性列表)
        detailInfo:{}
    },
    getters:{
        //商品信息
        skuInfo(state){
            return state.detailInfo.skuInfo ? state.detailInfo.skuInfo : {}
        },
        //商品的导航信息
        categoryView(state){
            return state.detailInfo.categoryView ? state.detailInfo.categoryView : {}
        },
        //商品的所有销售属性列表
        spuSaleAttrList(state) {
            return state.detailInfo.spuSaleAttrList ? state.detailInfo.spuSaleAttrList : []
        },
        //点击的商品的属性列表
        checkedGoodsAttr(state){
            let goods = [];
            state.detailInfo.spuSaleAttrList && state.detailInfo.spuSaleAttrList.forEach(item=>{
                item.spuSaleAttrValueList.forEach(item=>{
                    //item: 代表每一个属性的属性值
                    if(item.isChecked==="1"){goods.push(item)}
                })
            })
            return goods
        }
    },
    mutations:{
        //获取三级分类数据的mutation
        getDetailById(state,detailInfo){
            state.detailInfo = detailInfo
        },
        //修改属性按钮的mutation
        updateSpuSaleAttrListAction(state,{attrIndex,valIndex}){
            //attrIndex : 属性对应的索引
            //valIndex :  属性值对应的索引
            state.detailInfo.spuSaleAttrList.forEach((item,index)=>{
                if(index === attrIndex){
                    //找到对应的属性
                    item.spuSaleAttrValueList.forEach((item,index)=>{
                        item.isChecked = "0"
                        if(index === valIndex){
                            //找到对应的值
                            item.isChecked = "1"
                        }
                    })
                }
            })
        }
    },
    actions:{
        //获取三级分类数据的action
        async getDetailById(store,{skuId}){
            const {code,data} = await getDetailById(skuId);
            if(code === 200){
                //提交mutation
                store.commit("getDetailById",data);
                return data;
            }
        },
        //修改属性按钮的action
        updateSpuSaleAttrListAction(store,{attrIndex,valIndex}){
            store.commit("updateSpuSaleAttrListAction",{attrIndex,valIndex})
        }
    }
}